7
תגובות

SQL בדיקה מ2 טבלאות

פתח itamarhadad ,
SELECT id FROM hosts ORDER BY RAND() LIMIT 1

אני רוצה שID יקיים בנוסף
SELECT id FROM users WHERE id=$id AND time>$t


יש דרך לחבר את 2 השאילתות בSQL כלומר שתהיה בסוף שאילתא אחת שתחזיר לי את הID שמקיים את 2 הבקשות האלה

7 תשובות

avatar ענה OrelBeY ב 07 למאי 2013 #

אתה צריך להשתמש ב-JOIN. תחפש על זה חומר, בתקווה שתמצא משהו טוב, כי זה נושא נורא מבלבל ומורכב (לפחות בשבילי). אתה יכול להתחיל ב-DevSchool.co.il.

avatar ענה intval ב 07 למאי 2013 #

בשביל מה השליפה הראשונה אז?
תשלוף ישירות מהטבלה השניה עם order by rand

avatar ענה itamarhadad ב 07 למאי 2013 #

אני חייב את השליפה הראשונה כי אני חייב לבדוק אם המשתמש מופיע גם ברשימת ההוסטים

אז איך אני יכול לקבל משתמש שמופיע בשניהם ואז לעשות RAND?

avatar ענה itamarhadad ב 07 למאי 2013 #

SELECT id FROM users WHERE id=(SELECT id FROM hosts ORDER BY RAND() LIMIT 1) AND time>$t

זה התשובה בסוף

avatar ענה OrelBeY ב 07 למאי 2013 #

די מצטער על התשובה הגרועה שלי. עבר המון זמן מאז כתבתי קוד SQL. בכל מקרה, JOIN הוא נושא חשוב מאוד, ועדיין צריך ללמוד אותו (אם עוד לא יודעים). :-)

avatar ענה itamarhadad ב 07 למאי 2013 #

חחחח בסדר אחי
אני יודע מה זה JOIN זה יותר לשלב 2 טבלאות לתוצאה אחת אני הייתי צריך לשלוף משניהם את אותה תוצא רק בתנאים של טבלה מסוימת (HOSTS) אבל לא משנה כבר..

avatar ענה intval ב 08 למאי 2013 #

זה לא בדיוק התשובה בגלל כי יהיו מקרים שהשאילת הפנימית תחזיר ID שלא מתאים על השאילת השניה.
אבל אחלה נסיון.

SELECT users.id FROM users, hosts
WHERE users.id = hosts.id AND hosts.time > $t
ORDER BY RAND() LIMIT 1